package teach.aistar.mapper;

import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import teach.aistar.model.entity.WebSeckill;

import java.util.List;
import java.util.Map;

/**
 * 本类用来演示: 秒杀mapper
 *
 * @author: success
 * @date: 2021/5/13 9:06 上午
 */
public interface SeckillMapper {

    /**
     * 该方法与秒杀业务无关 - 仅仅是为了测试数据库的环境
     * map的key - 查询的列名
     * map的value - 具体的某行某列的数据
     * @return
     */
    @Select("select * from web_seckill ")
    List<Map<String,Object>> findAll();


    /**
     * 加载出参与秒杀活动的商品
     * @return
     */
    @Select("select * from web_seckill where startTime>now() and status='0'")
    List<Map<String,Object>> unStartSeckill();

    /**
     * 秒杀活动尚未开始 -> 秒杀活动进行中
     * {0} -> {1}
     * 更新秒杀的状态
     * @return
     */
    @Update("update web_seckill set status='1' where startTime<now() and endTime>now() and status='0'")
    int updateStarting();

    /**
     * 加载出秒杀活动进行中的商品的id
     * @return
     */
    @Select("select id from web_seckill where startTime<now() and endTime>now() and status='1'")
    List<Long> findKillStarting();

    /**
     * 秒杀活动结束了.
     * 更新status => {1}->{2}
     * @return
     */
    @Update("update web_seckill set status='2' where endTime<now() and status='1'")
    int endKill();


    @Update("update web_seckill set num=num-1 where id = #{secId}")
    int update(Long secId);
    /**
     * 加载出秒杀活动已经结束后的商品的id
     * @return
     */
    @Select("select id from web_seckill where endTime<now() and status='2'")
    List<Long> findEndKillId();



 }
